1思路
点云中有多组点,通过点云聚类找出其中点数最多的一组。
2代码
pcl::search::KdTree<pcl::PointXYZRGBA>::Ptr tree(new pcl::search::KdTree<pcl::PointXYZRGBA>);
tree->setInputCloud(cloud_box);
std::vector<pcl::PointIndices> cluster_indices;
pcl::EuclideanClusterExtraction<pcl::PointXYZRGBA> ec;
ec.setClusterTolerance(0.02);
ec.setMinClusterSize(100);
ec.setMaxClusterSize(50000);
ec.setSearchMethod(tree);
ec.setInputCloud(cloud_box);
ec.extract(cluster_indices);
size_t num = cluster_indices.size();
cout << num << endl;
int num_points = cluster_indices[0].indices.size();
int num_index;
for (size_t i = 0; i < num; i++)
{
if (cluster_indices[i].indices.size() > num_points)
{
num_points = cluster_indices[i].indices.size();
num_index = i;
}
}
pcl::copyPointCloud(*cloud_box, cluster_indices[num_index].indices, *cloud_box_filter);
3效果